/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller.user;

import dao.NguoidungDAO;
import java.sql.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import pojo.Nguoidung;
import util.Utils;

/**
 *
 * @author BlueZky
 */
public class taiKhoanController extends AbstractController {

    public taiKhoanController() {
    }

    @Override
    protected ModelAndView handleRequestInternal(
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("UTF-8");
        ModelAndView mv = null;
        String action = request.getParameter("a");
        HttpSession session = request.getSession();
        Nguoidung nd = (Nguoidung) session.getAttribute("nguoiDung");

        if (nd == null) {
            mv = new ModelAndView("All/dangnhap");
            mv.addObject("message", "Bạn phải đăng nhập trước!");
            return mv;
        }

        if (action != null) {
            if (action.compareTo("e") == 0) {
                mv = new ModelAndView("User/index");
                mv.addObject("tag", "uchinhsua");
                return mv;
            } else if (action.compareToIgnoreCase("u") == 0) {
                Nguoidung nguoiDung = (Nguoidung)session.getAttribute("nguoiDung");

                String email = request.getParameter("email");
                String hoten = request.getParameter("fullName");
                String gioi = request.getParameter("gender");
                String ngaySinh = request.getParameter("dateOfBirth");
                String diaChi = request.getParameter("address");
                String soDienThoai = request.getParameter("phone");
                String paypal = request.getParameter("paypalID");
                String message = "";

                mv = new ModelAndView("User/index");
                mv.addObject("tag", "uchinhsua");
                mv.addObject("success", "false");
                nguoiDung.setEmail(email);
                nguoiDung.setHoten(hoten);
                nguoiDung.setGioitinh(gioi);
                nguoiDung.setDiachi(diaChi);
                nguoiDung.setSodienthoai(soDienThoai);
                nguoiDung.setTaikhoanpaypal(paypal);

                Date dat = null;
                if (ngaySinh != null && ngaySinh.length() > 0) {
                    try {
                        String[] tmp = ngaySinh.split("/");
                        ngaySinh = tmp[2] + "-" + tmp[1] + "-" + tmp[0];
                        dat = Date.valueOf(ngaySinh);
                        System.out.println(dat.toString());
                    } catch (Exception ex) {
                        System.out.println(ex.getMessage());
                        dat = null;
                    }
                }
                nguoiDung.setNgaysinh(dat);
                message = isValid(nguoiDung);

                nguoiDung.setTendangnhap(nd.getTendangnhap());
                if (message.length() == 0) {
                    if (NguoidungDAO.suaNguoiDung(nd)) {
                        message = "Cập nhật thông tin thành công.";
                        mv.addObject("message", message);
                        mv.addObject("success", "true");
                        session.setAttribute("nguoiDung", nguoiDung);
                        return mv;
                    } else {
                        message = "cập nhật thông tin thất bại";
                        mv.addObject("message", message);
                        return mv;
                    }
                } else {
                    mv.addObject("message", message);
                    return mv;
                }

            } else if (action.compareTo("r") == 0) {
                mv = new ModelAndView("User/index");
                mv.addObject("tag", "doiMatKhau");
                return mv;
                
            } else if (action.compareTo("uP") == 0) {
                String matKhauCu = request.getParameter("oPassword");
                String matKhauMoi = request.getParameter("nPassword");
                String reMatKhau = request.getParameter("rePassword");
                
                mv = new ModelAndView("User/index");
                mv.addObject("tag", "doiMatKhau");
                mv.addObject("success","false");

                if (matKhauCu == null || matKhauMoi == null || reMatKhau == null
                        || matKhauMoi.compareTo(reMatKhau) != 0 || matKhauMoi.length() < 6) {
                    mv.addObject("message", "Mật khẩu nhập vào không đúng");
                } else {
                    if (nd.getMatkhau().compareTo(Utils.maHoa_MD5(matKhauCu)) != 0) {
                        mv.addObject("message", "Mật khẩu nhập vào không đúng");
                    } else {
                        if (NguoidungDAO.suaMatKhautdn(nd.getTendangnhap(), matKhauMoi)) {
                            mv.addObject("message", "Đổi mật khẩu thành công");
                            mv.addObject("success", "true");
                        } else {
                            mv.addObject("message", "Mật khẩu nhập vào không đúng");
                        }
                    }
                }

                return mv;
            }
        }

        mv = new ModelAndView("User/index");
        mv.addObject("tag", "taikhoan");
        return mv;
    }

    /**
     * Kiểm tra thông tin nhập vào có hợp lệ hay không
     * @param nguoiDung: Đối tượng chứa thông tin người dùng
     * @return Chuỗi chứa thông báo lỗi nếu có.
     */
    private String isValid(Nguoidung nguoiDung) {
        String message = "";

        // Kiểm tra tên đăng nhập
        if (nguoiDung.getEmail() == null || nguoiDung.getEmail().length() == 0) {
            message += "<br/>Nhập địa chỉ email.";
        } else if (nguoiDung.getMatkhau() == null || nguoiDung.getMatkhau().length() == 0) {
            message += "<br/>Điền mật khẩu.";
        } else if (nguoiDung.getNgaysinh() == null) {
            message += "<br/>Nhập ngày sinh.";
        } else if (nguoiDung.getHoten() == null || nguoiDung.getHoten().length() == 0) {
            message += "<br/>Nhập họ tên đầy đủ";
        } else if (nguoiDung.getDiachi() == null || nguoiDung.getDiachi().length() == 0) {
            message += "<br/>Nhập địa chỉ";
        } else if (!nguoiDung.getSodienthoai().matches("^[0-9]*$")) {
            message += "<br/>Số điện thoại không hợp lệ";
        }
        return message;
    }
}
